[Hex] dbtと連携してみた
大阪オフィスの玉井です。
Hexはdbtと連携できる機能があります。当社はdbtのパートナーということもあり、試さなわい訳にはいかないため、実際にやってみました。
Hexとは?
以下の記事をどうぞ。
dbtと連携するとどうなる?
Hexは、同一画面上から、接続しているDWHのテーブル等を専用エクスプローラーで調べたり選んだりすることができます。dbtと連携すると、テーブル等に、dbt側の情報も合わせて確認できるようになります。
やってみた
dbtと連携するための条件
以下の通りです。一部、ドキュメントにも書かれていないことがありました(サポートに聞いた)。
- dbt側でService Tokenが作成されていること
- Job AdminとMetadata Onlyの権限が与えられていること
- dbt側に何らかのJobが設定されていること
- 一度は実行できていること
- dbt側でモデルの生成ができていること
- dbt側でドキュメントが生成できていること
ちなみに、Service Token(サービスアカウント)は、dbtの契約がTeamプラン以上じゃないと使用できません。そのため、(各種プランとは関係なく使える)dbt coreでは、この連携を使うことはできません。
dbt側の準備
上記の通りなので、これ以上説明することはあまり無いのですが、連携に成功した時のService Tokenの設定について、ここに残しておきます。
Account SettingsからService Tokenのメニューに行きます。
Job AdminとMetadata Onlyの権限を設定します。
Tokenの作成に成功すると、Token自体が出てくるので、忘れずコピっておきます。
Hexにdbtの情報を連携する
どこに入力するのか?ですが、DWHの設定の中にあります。今回はSnowflakeを使用している前提でいきます。
HexのSnowflake設定画面に、ひょっこりdbtオプションがあるので、ONににします。
すると、3つの情報を入れるポップアップが出てきます。
Service Tokenは、そのまま入れればOKです。残りのAccount IDとProject IDは何を入れればいいのでしょうか。
これは公式ドキュメントの説明がわかりやすいので、引用します。
Account ID and Project ID can be most easily found in the URL of the “Jobs” page for your project, following this structure: https://cloud.getdbt.com/#/accounts//projects//jobs/
連携させたいプロジェクトのURLに含まれている数値、ということですね。
Hex側でdbtの情報を確認してみる
前述したdbt側の条件が揃っていれば、Hex上でdbt側の情報が閲覧できます。
といっても、いきなりdbt専用メニューが出てくるわけではありません。DWHのエクスプローラーでテーブル等を見た時、それがdbtで生成したモデルであれば、dbtの情報が出るようになっています。
dbtと関係無いテーブルを見ても何もでませんが…
dbtで生成したモデルを見ると、こうなります。
見ればわかりますが、dbt側で設定されているdescriptionなんかも全て反映されています。データを選ぶ時にわかりやすいですね。
他にも細かい機能があり、例えばこのモデルが最後に生成された日時や、生成の際にクリアしたテストについても確認できます。
また、各カラムから、直接dbtのドキュメントに飛ぶこともできます。
dbtの情報を見つつ、適切なデータセットを選んで分析を開始することができます。
おわりに
Hexでの分析をより良くするために、dbt側をしっかり作っていく、という意識が芽生えるかもしれませんね。